package penjat;

import java.util.Arrays;
import java.util.LinkedList;


/** Classe que representa el model bàsic del joc del penjat.
 * Existeix un array intern amb paraules a endevinar.
 * S'agafa una a l'atzar dins la vista de l'aplicació.@see penjat.GUIPenjat
 * 
 * @author Montse Madridejos
 * @version gener 2012
 */
public class JocPenjat {

    private String paraulaSecreta;
    //private char [] guionets;
    private StringBuffer guionets;
    private boolean guanya = false;
    private int errors = 0;
    /* PER DEFECTE, OENJAT EN CATALÀ*/
    private static String paraules[] = {"PAPALLONA", "MERCADERIA", "FUTBOL", "PALLASSO",
        "AMIC","AMERICANA","MATINADA","CARNESTOLTES","PETIT","LLAPIS","RELLOTGE",
    "BANANA","CARGOL","DINERS","ELEFANT","FARIGOLA","HABITACIO","IMAGINACIO","JOGUINA",
    "LLIMONA","NADAL","OLFACTE","SABATILLA","TOMAQUET","URANI","VEGETAL"};
    

    /* max intents = 6 */
    public JocPenjat() {
        /* per defecte, agafa una paraula a l'atzar de l'array de paraules */
        int pos = (int) (Math.random() * paraules.length);
        paraulaSecreta = paraules[pos];

        //  guionets=new char[paraulaSecreta.length()];
        /* posar tants guionets com paraulaSecreta */
        guionets = new StringBuffer();
        for (int i = 0; i < paraulaSecreta.length(); i++) {
            //guionets[i]='-';    
            guionets = guionets.append('-');
        }
    }

    public JocPenjat(String p) {
        paraulaSecreta = p;
        guionets = new StringBuffer();
        /* posar tants guiones com lletres tingui paraulaSecreta */
        for (int i = 0; i < paraulaSecreta.length(); i++) {
            guionets = guionets.append('-');
        }
    }
    public String getParaulaSecreta(){
        return paraulaSecreta;
    }
    public LinkedList getLlistaParaules(){
        LinkedList<String> llista=new LinkedList<String>();
        llista.addAll(Arrays.asList(paraules));
        return llista;       
    }
    

    public void avaluar(char lletra) {
        boolean encert = false;
        for (int i = 0; i < paraulaSecreta.length(); i++) {
            if (paraulaSecreta.charAt(i) == lletra) {
                guionets.setCharAt(i, lletra);
                encert = true;
            }
        }
        if (!encert) {
            errors++;
        }
        if (paraulaSecreta.equals(getParaulaGuions())) {
            guanya = true;
        }
    }

    public void setParaulaSecreta(String p) {
        paraulaSecreta = p;
    }

    public String getParaulaGuions() {
        return new String(guionets);
    }

    public boolean guanyar() {
        return guanya;
    }

    public int getErrors() {
        return errors;
    }
}
// Versio amb char[] 
// public void setGuionets(char []g){
//        guionets=g;
//    }
//    public JocPenjat(){
//        paraulaSecreta="PARAULA";
//        guionets=new char[paraulaSecreta.length()];
//        /* posar tants guionets com paraulaSecreta */ 
//        for(int i=0;i<paraulaSecreta.length();i++){
//          guionets[i]='-';            
//        }                                   
//    }
//    public JocPenjat(String p){
//        paraulaSecreta=p;
//        guionets=new char[paraulaSecreta.length()];
//        /* posar guionets a la paraulaAux */
//        for(int i=0;i<paraulaSecreta.length();i++){
//          guionets[i]='-';    
//        }                      
//    }
//    public String getParaulaGuions(){
//       String aux="";
//        for(int i=0;i<guionets.length;i++)
//        aux=aux+guionets[i];
//        return aux;
//    }
//    public void avaluar(char lletra) {
//        boolean encert = false;
//            for(int i=0;i<paraulaSecreta.length();i++){
//                if(paraulaSecreta.charAt(i)==lletra) { guionets[i]=lletra;
//                                                       encert=true;
//                }              
//            }     
//        if (!encert) {
//            errors++;
//        }
//        if (paraulaSecreta.equals(getParaulaGuions())) {
//            guanya = true;
//        }
//    }

